#include <iostream>

using namespace std;

struct typeA {
	int &a;
};

struct typeB {
	int *a;
};

struct student{
	int id;
	char name[64];
};
// int *const a = main::a
void modify(int *const a){
	*a = 300;
}
// 当我们将一个引用作为参数的时候，编辑器会替我们，将实参取地址一个操作
void modify(int &a){
	a = 300;
}

/**
 * 当我们使用引用编程的时候，将引用作为变量的一个别名
 * 当我们去研究的时候，可以将引用作为一个常指针去研究
 */
int main(int argc, char *argv[]) {

	cout << "sizeof(struct typeA):" << sizeof(typeA) << endl;
	cout << "sizeof(struct typeB):" << sizeof(typeB) << endl;
	// 引用和指针占用的大小，时相等的

	int a = 10;
	int &re = a;// 引用需要初始化，常亮也需要初始化，引用可能是一个常量
	// 综合以上两点，引用可能是一个常指针

	// 定义一个常指针
	int *const p = &a;

	return 0;
}
